﻿using System;
using System.ServiceModel;
using System.Web;
using System.ServiceModel.Channels;
using System.Data;
using System.Configuration;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.Globalization;
using System.IO;
using Tipler.DataSetler;
using Tipler.Enumlar;
using System.Text;
using System.Linq;
using System.Security.Cryptography;
using Tipler.Siniflar;
using IKYSWeb.Siniflar;
using Tipler.OzellikTipleri;
using System.Security.Permissions;
using Microsoft.Reporting.WebForms;
using System.Collections.Generic;
using System.Diagnostics;
using IsKurallari;

public class BasePage : Page
{

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
    }

    protected override void OnPreInit(EventArgs e)
    {

        if (AktifKullanici.SessionID == "")
        {
            YetkiAttribute att = (YetkiAttribute)GetType().GetCustomAttributes(typeof(YetkiAttribute), true)[0];
            if (att.MenuID != EnumSayfaYetkileri.Yetkisiz.GetHashCode())
            {

                //   EventLogYaz("Session bitti. " + " Kullanici IP: " + Request.UserHostAddress + " AktifKullaniciSessionID :" + AktifKullanici.SessionID + " ASPSessionID :" + Session.SessionID + " " + DateTime.Now.ToString() + (Session.IsNewSession ? " Yeni Session " : " Eski Session") + Request.Url.PathAndQuery, System.Diagnostics.EventLogEntryType.FailureAudit);

                Response.Redirect("~/Login.aspx?ReturnUrl=" + Request.Url.PathAndQuery);
            }
            else
            {
                return;
            }
        }

        if (!Page.IsPostBack)
        {
            if (GetType().IsDefined(typeof(YetkiAttribute), true))
            {
                object[] Attributes = GetType().GetCustomAttributes(typeof(YetkiAttribute), true);

                bool bYetkVar = false;
                foreach (object obj in Attributes)
                {
                    YetkiAttribute att = (YetkiAttribute)obj;
                    if (att.MenuID == EnumSayfaYetkileri.Yetkisiz.GetHashCode() || att.MenuID == EnumSayfaYetkileri.Herkes_Yetkili.GetHashCode())
                        bYetkVar = true;
                    else
                        if (YetkiAraci.YetkilimiSayfa((EnumSayfaYetkileri)att.MenuID))
                            bYetkVar = true;

                }
                if (!bYetkVar)
                    Response.Redirect(VirtualPathUtility.ToAbsolute("~/Default.aspx") + "?YS=1");
            }
            //Yetki Attribute yok ise işleme devam et.
            else
            {
                Response.Redirect(VirtualPathUtility.ToAbsolute("~/Default.aspx") + "?YS=1");
            }
        }

        base.OnPreInit(e);
    }

    #region Yeni ID Getir
    public static int YeniIDGetir(string TabloAdi)
    {
        OrtakIsKurali oOrtak = new OrtakIsKurali();

        return oOrtak.YeniIDGetir(TabloAdi).Sonuc;
    }
    public static short YeniIDGetirShort(string TabloAdi)
    {
        OrtakIsKurali oOrtak = new OrtakIsKurali();

        return (short)oOrtak.YeniIDGetir(TabloAdi).Sonuc;
    }
    #endregion

    #region Hata Sayfasına Yönlendir

    protected override void OnError(EventArgs e)
    {
        Exception appException = Server.GetLastError() ?? new Exception("Tanımsız Hata!");
        HatayiMailAtveLogla(appException);
    }
    public static void HatayiMailAtveLogla(Exception appException, string HataDetayi = "")
    {
        StringBuilder HataMesaji = new StringBuilder();

        HataMesaji.Append(" Mailin geldiği sunucu EndpointType: " + ConfigurationManager.AppSettings["EndpointType"] + "<br>");
        HataMesaji.Append(" Mailin geldiği URL: " + HttpContext.Current.Request.Url.AbsoluteUri + "<br>");
        HataMesaji.Append("Aktif Kullanici ID: ");
        HataMesaji.Append((AktifKullanici.SessionID != "" ? AktifKullanici.KullaniciID.ToString() : "-1"));
        HataMesaji.Append("<br>");
        HataMesaji.Append("Aktif Kullanici adı: ");
        HataMesaji.Append((AktifKullanici.SessionID != "" ? AktifKullanici.KullaniciBilgisiRow.KullaniciAdi : ""));
        HataMesaji.Append("<br>Kullanici IP: ");
        HataMesaji.Append(HttpContext.Current.Request.UserHostAddress);
        HataMesaji.Append("<br> Hata Sayfası: ");
        HataMesaji.Append(HttpContext.Current.Request.FilePath);
        HataMesaji.Append("<br>Hata açıklaması:" + HataDetayi);
        HataMesaji.Append("<br>Exception Message:");
        HataMesaji.Append(appException.Message);
        HataMesaji.Append("<br>Exception Source: <br>");
        HataMesaji.Append(appException.Source);
        HataMesaji.Append("<br>Stack Trace: <br>");
        HataMesaji.Append(appException.StackTrace);

        try
        {
            EventLogYaz(HataMesaji.ToString());
        }
        catch
        {
            HataSayfasinaYonlendir(appException, string.Empty);
        }
        if (appException.InnerException != null)
        {
            HataMesaji.Append("<br>Inner Exception : ");
            HataMesaji.Append("<br>" + appException.InnerException.Message);
        }
        HttpContext.Current.Session["HataMesaji"] = HataMesaji.ToString();
#if DEBUG

#else
        Araclar.SistemiciEPostaGonder(appException.Message, HataMesaji.ToString());
#endif

        HataLogDataSet ds = HataLogDataSet(appException);
        OrtakIsKurali oSonuc = new OrtakIsKurali();
        FonksiyonSonuc<bool> sonuc = oSonuc.HataKaydet(ds);
        if (!sonuc.HataVarMi)
            sonuc.Hata = "Oluşan hatanın bilgileri kaydedilmiştir.";
        else
            sonuc.Hata = "Oluşan hatanın kayıdı yapılamamıştır. Lütfen sistem yöneticisine başvurunuz.";
        HataSayfasinaYonlendir(appException, sonuc.Hata);
    }

    private static HataLogDataSet HataLogDataSet(Exception appException)
    {
        HataLogDataSet dsHataLog = new HataLogDataSet();
        HataLogDataSet.HataLogRow drHataLog = dsHataLog.HataLog.NewHataLogRow();
        drHataLog.HataLogID = YeniIDGetir(dsHataLog.HataLog.TableName);
        drHataLog.HataAdi = appException.Message;
        drHataLog.HataMesaji = appException.StackTrace;
        drHataLog.HataKodu = EnumHataKodları.Kaydet.GetHashCode().ToString(); // Geçici olarak 1 verildi
        drHataLog.HataTarihi = DateTime.Now;
        drHataLog.KullaniciID = AktifKullanici.KullaniciID;
        drHataLog.HataGonderildiMi = EnumHataDurumu.Çözülmedi.GetHashCode();

        dsHataLog.HataLog.AddHataLogRow(drHataLog);
        return dsHataLog;
    }

    public static void HataSayfasinaYonlendir(Exception ex, string logHatasi)
    {
        HttpContext.Current.Session["SON_HATA"] = ex;
        HttpContext.Current.Session["LOG_HATA"] = logHatasi != "" ? logHatasi : null;

        HttpContext.Current.Response.Redirect("~/HataSayfasi.aspx");
    }

    #endregion

    #region Mesaj Göster
    public enum MesajTipiEnum
    {
        Bilgi = 1,
        Uyari = 2,
        Hata = 3,
        Basari = 4
    }

    /// <summary>
    /// mesaj gösterme
    /// çalışması için Jquery ve UI olması şarttır! (MK)
    /// </summary>
    /// <param name="oPage"></param>
    /// <param name="sMesaj"></param>
    /// <param name="tip"></param>
    public static void MesajGoster(System.Web.UI.Page oPage, string sMesaj, MesajTipiEnum tip, MasterPage PageMaster = null)
    {
        String[] title = { "Bilgi", "Uyarı", "Hata Oluştu", "İşlem Başarılı" };

        Literal dialogLTR = new Literal();
        dialogLTR.Text = "<div id=\"dialog\" class=\"msg_" + tip.ToString() + "\" title=\"" + title[Convert.ToInt32(tip) - 1] + "\">" + sMesaj + "</div>";
        if (PageMaster != null)
            PageMaster.FindControl("dialogContainer").Controls.Add(dialogLTR);
        else
            oPage.Master.FindControl("dialogContainer").Controls.Add(dialogLTR);
        //up.ContentTemplate
        //oPage.Master.FindControl("up1").Controls.Add(dialogLTR);
        //oPage.Controls.Add(dialogLTR);
    }

    public static void MesajGoster(System.Web.UI.Page oPage, string sMesaj, MesajTipiEnum tip, string yonlendirilecekUrl, MasterPage PageMaster = null)
    {
        String[] title = { "Bilgi", "Uyarı", "Hata Oluştu", "İşlem Başarılı" };

        Literal dialogLTR = new Literal();
        dialogLTR.Text = "<div id=\"dialog\" class=\"msg_" + tip.ToString() + "\" title=\"" + title[Convert.ToInt32(tip) - 1] + "|" + yonlendirilecekUrl + "\">" + sMesaj + "</div>";

        if (PageMaster != null)
            PageMaster.FindControl("dialogContainer").Controls.Add(dialogLTR);
        else
            oPage.Master.FindControl("dialogContainer").Controls.Add(dialogLTR);

        //up.ContentTemplate
        //oPage.Master.FindControl("up1").Controls.Add(dialogLTR);
        //oPage.Controls.Add(dialogLTR);
    }

    public static void MesajGosterSistem(System.Web.UI.Page oPage, string sMesaj)
    {

        // Define the name and type of the client scripts on the page. 
        string csname1 = "PopupScript";
        Type cstype = oPage.GetType();
        Label msg = new Label();
        msg.Attributes.Add("id", "msg");


        // Get a ClientScriptManager reference from the Page class. 
        ClientScriptManager cs = oPage.ClientScript;

        // Check to see if the startup script is already registered. 
        if ((!cs.IsStartupScriptRegistered(cstype, csname1)))
        {
            string sStr;
            sStr = "";
            sMesaj.Replace("\\n", "<br />");

            sStr += "$(function(){ $.modal($(\"#box\").html(),{containerCss: {height: '300',width: '500'}}); });";

            cs.RegisterStartupScript(cstype, csname1, sStr, true);

            sStr = "<div id=\"box\" style=\"display:none\"><div style=\"text-align:center\"><img src='"
                + ConfigurationManager.AppSettings["SitePath"]
                + "/images/hata.png' alt=\"\" align=\"left\"/ style=\"float:left\"><h3>Sistem Hatası</h3><br><br><div style=\"height:200px;width:500px;overflow:scroll\">"
                + sMesaj + "</div><br/><br/><button  class='modalClose' >TAMAM</button></div>";
            //msg.Attributes.Add("Text", sStr);
            msg.Text = sStr;
            oPage.Controls.Add(msg);

        }
    }
    #endregion

    #region List Doldur

    public enum ListeIlkYazı
    {
        Seçiniz,
        Hepsi,
        Boş,
        Yok
    }

    public enum ListeIlkDeger
    {
        Sayı,
        Guid,
    }

    public enum ListeSirala
    {
        Normal = 1,
        TextAsc,
        TextDesc,
        ValueAsc,
        ValueDesc
    }

    public static void ListSatirEkle(ListControl lst, string sText, string sValue)
    {
        ListItem li = new ListItem(sText, sValue);
        lst.Items.Insert(0, li);
    }

    public static void ListDoldurFromENUM(Type T, ListControl lst, ListeIlkYazı liy, EnumSort sort = EnumSort.Asc)
    {
        ListDoldurFromENUM(T, lst, liy, ListeIlkDeger.Sayı, sort);
    }

    public static void ListDoldurFromENUM(Type T, ListControl lst, ListeIlkYazı liy, ListeIlkDeger lid, EnumSort sort)
    {
        System.Array values = System.Enum.GetValues(T);

        if (sort == EnumSort.Asc)
        {
            for (int i = values.Length - 1; i >= 0; i--)
            {
                ListSatirEkle(lst, values.GetValue(i).ToString().Replace("_", " "), ((int)values.GetValue(i)).ToString());
            }
        }
        else
        {
            for (int i = 0; i <= values.Length - 1; i++)
            {
                ListSatirEkle(lst, values.GetValue(i).ToString().Replace("_", " "), ((int)values.GetValue(i)).ToString());
            }
        }

        if (liy == ListeIlkYazı.Seçiniz)
            ListSatirEkle(lst, ListeIlkYazı.Seçiniz.ToString().Replace("_", " "), lid == ListeIlkDeger.Guid ? Guid.Empty.ToString() : "-1");
        else if (liy == ListeIlkYazı.Hepsi)
            ListSatirEkle(lst, ListeIlkYazı.Hepsi.ToString().Replace("_", " "), lid == ListeIlkDeger.Guid ? Guid.Empty.ToString() : "-1");
        else if (liy == ListeIlkYazı.Boş)
            ListSatirEkle(lst, (" "), lid == ListeIlkDeger.Guid ? Guid.Empty.ToString() : "-1");
    }
    public static void ListDoldurFromSayi(ListControl lst, int BaslangicSayisi, int BitisSayisi, ListeIlkYazı liy)
    {
        ListDoldurFromSayi(lst, BaslangicSayisi, BitisSayisi, liy, ListeIlkDeger.Sayı);
    }
    public static void ListDoldurFromSayi(ListControl lst, int BaslangicSayisi, int BitisSayisi, ListeIlkYazı liy, EnumSort sort)
    {
        if (sort == EnumSort.Desc)
            for (int i = BaslangicSayisi; i <= BitisSayisi; i++)
                ListSatirEkle(lst, i.ToString(), i.ToString());
        else
            for (int i = BitisSayisi; i >= BaslangicSayisi; i--)
                ListSatirEkle(lst, i.ToString(), i.ToString());

        if (liy == ListeIlkYazı.Seçiniz)
            ListSatirEkle(lst, ListeIlkYazı.Seçiniz.ToString().Replace("_", " "), "-1");
        else if (liy == ListeIlkYazı.Hepsi)
            ListSatirEkle(lst, ListeIlkYazı.Hepsi.ToString().Replace("_", " "), "-1");
        else if (liy == ListeIlkYazı.Boş)
            ListSatirEkle(lst, (" "), "-1");
    }

    public static void ListDoldurFromSayi(ListControl lst, int BaslangicSayisi, int BitisSayisi, ListeIlkYazı liy, ListeIlkDeger lid)
    {
        for (int i = BitisSayisi; i >= BaslangicSayisi; i--)
        {
            ListSatirEkle(lst, i.ToString(), i.ToString());
        }

        if (liy == ListeIlkYazı.Seçiniz)
            ListSatirEkle(lst, ListeIlkYazı.Seçiniz.ToString().Replace("_", " "), lid == ListeIlkDeger.Guid ? Guid.Empty.ToString() : "-1");
        else if (liy == ListeIlkYazı.Hepsi)
            ListSatirEkle(lst, ListeIlkYazı.Hepsi.ToString().Replace("_", " "), lid == ListeIlkDeger.Guid ? Guid.Empty.ToString() : "-1");
        else if (liy == ListeIlkYazı.Boş)
            ListSatirEkle(lst, (" "), lid == ListeIlkDeger.Guid ? Guid.Empty.ToString() : "-1");
    }

    public static void ListDoldurFromDS(DataSet ds, ListControl lst, string sTextField, string sValueField, ListeIlkYazı liy)
    {
        ListDoldurFromDS(ds, lst, sTextField, sValueField, liy, ListeIlkDeger.Sayı, ListeSirala.TextAsc);
    }

    public static void ListDoldurFromDS(DataSet ds, ListControl lst, string sTextField, string sValueField, ListeIlkYazı liy, ListeSirala sort)
    {
        ListDoldurFromDS(ds, lst, sTextField, sValueField, liy, ListeIlkDeger.Sayı, sort);
    }

    public static void ListDoldurFromDS(DataSet ds, ListControl lst, string sTextField,
        string sValueField, ListeIlkYazı liy, ListeIlkDeger lid, ListeSirala sort)
    {
        if (ds != null)
        {
            DataView dv = new DataView(ds.Tables[0]);
            if (sort != ListeSirala.Normal)
            {
                if (sort == ListeSirala.TextAsc)
                    dv.Sort = sTextField + " ASC";
                else if (sort == ListeSirala.TextDesc)
                    dv.Sort = sTextField + " DESC";
                else if (sort == ListeSirala.ValueAsc)
                    dv.Sort = sValueField + " ASC";
                else
                    dv.Sort = sValueField + " DESC";
            }

            lst.DataSource = dv;
            lst.DataTextField = sTextField;
            lst.DataValueField = sValueField;
            lst.DataBind();
        }
        else
        {
            lst.Items.Clear();
            lst.DataSource = null;
            lst.DataBind();
        }


        if (liy == ListeIlkYazı.Seçiniz)
            ListSatirEkle(lst, ListeIlkYazı.Seçiniz.ToString().Replace("_", " "), lid == ListeIlkDeger.Guid ? Guid.Empty.ToString() : "-1");
        else if (liy == ListeIlkYazı.Hepsi)
            ListSatirEkle(lst, ListeIlkYazı.Hepsi.ToString().Replace("_", " "), lid == ListeIlkDeger.Guid ? Guid.Empty.ToString() : "-1");
        else if (liy == ListeIlkYazı.Boş)
            ListSatirEkle(lst, (" "), lid == ListeIlkDeger.Guid ? Guid.Empty.ToString() : "-1");
    }

    //public static void ListDoldurFromDT(DataTable dt, ListControl lst, string sTextField, string sValueField, ListeIlkYazı liy)
    //{
    //    ListDoldurFromDT(dt, lst, sTextField, sValueField, liy, ListedeIlkDeger.Sayı, EnumListSort.TextAsc);
    //}

    //public static void ListDoldurFromDT(DataTable dt, ListControl lst, string sTextField,
    //    string sValueField, ListeIlkYazı liy, ListedeIlkDeger lid, EnumListSort sort)
    //{
    //    if (dt != null && dt.Rows.Count > 0)
    //    {
    //        DataView dv = new DataView(dt);
    //        if (sort != EnumListSort.Normal)
    //        {
    //            if (sort == EnumListSort.TextAsc)
    //                dv.Sort = sTextField + " ASC";
    //            else if (sort == EnumListSort.TextDesc)
    //                dv.Sort = sTextField + " DESC";
    //            else if (sort == EnumListSort.ValueAsc)
    //                dv.Sort = sValueField + " ASC";
    //            else
    //                dv.Sort = sValueField + " DESC";
    //        }

    //        lst.DataSource = dv;
    //        lst.DataTextField = sTextField;
    //        lst.DataValueField = sValueField;
    //        lst.DataBind();
    //    }
    //    else
    //    {
    //        lst.DataSource = null;
    //        lst.DataBind();
    //    }


    //    if (liy == ListeIlkYazı.Seçiniz)
    //        ListSatirEkle(lst, ListeIlkYazı.Seçiniz.ToString().Replace("_", " "), lid == ListedeIlkDeger.Guid ? Guid.Empty.ToString() : "-1");
    //    else if (liy == ListeIlkYazı.Hepsi)
    //        ListSatirEkle(lst, ListeIlkYazı.Hepsi.ToString().Replace("_", " "), lid == ListedeIlkDeger.Guid ? Guid.Empty.ToString() : "-1");
    //    else if (liy == ListeIlkYazı.Boş)
    //        ListSatirEkle(lst, (" "), lid == ListedeIlkDeger.Guid ? Guid.Empty.ToString() : "-1");
    //}

    #endregion

    #region Export Control

    /// <summary>
    /// Gönderilen kontrolün excel çıktısını verir.
    /// </summary>
    /// <param name="ctrl">Çıktısını istediğiniz kontrol. eg.Gridview,Page vs... Eğer kontrol olarak Page Gönderiliyorsa EnableEventValidation=falase yapılması lazım</param>
    public static void Ctrl2Excel(Control ctrl)
    {
        HttpResponse cResponse = HttpContext.Current.Response;
        cResponse.Clear();
        cResponse.BufferOutput = true;
        cResponse.AddHeader("content-disposition", "attachment;filename=Rapor.xls");
        cResponse.ContentEncoding = System.Text.Encoding.GetEncoding("ISO-8859-9");
        cResponse.Charset = "ISO-8859-9";
        cResponse.Cache.SetCacheability(HttpCacheability.NoCache);
        cResponse.ContentType = "application/vnd.xls";
        System.IO.StringWriter stringWrite = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
        ctrl.RenderControl(htmlWrite);
        cResponse.Write(HttpContext.Current.Server.HtmlDecode(stringWrite.ToString()));
        cResponse.End();
    }

    public static void Ctrl2ExcelYeni(string Baslik, Control ctrlGrid, string fileName)
    {
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.BufferOutput = true;
        HttpContext.Current.Response.Charset = "ISO-8859-9";
        HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
        //  HttpContext.Current.Response.ContentType = "application/vnd.word";



        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("ISO-8859-9");
        HttpContext.Current.Response.Charset = "ISO-8859-9";
        HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + fileName + ".xls");

        System.IO.StringWriter stringWrite = new StringWriter(System.Globalization.CultureInfo.CreateSpecificCulture("tr-TR"));
        System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(stringWrite);
        ctrlGrid.RenderControl(htmlWriter);

        // Output table as HTML
        string a1 = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<title>Datos</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1254\" />\n<style>\n</style>\n</head>\n<body>\n";
        string a3 = "<h3 align='center'>" + HttpContext.Current.Server.HtmlDecode(Baslik) + "</h3>";
        string a2 = "\n</body>\n</html>";
        HttpContext.Current.Response.Write(a1 + a3 + stringWrite.ToString() + a2);
        HttpContext.Current.Response.End();

    }
    //public static void Ctrl2PDF(string Baslik, Control ctrlGrid, string fileName)
    //{
    //    HttpContext.Current.Response.Clear();
    //    HttpContext.Current.Response.BufferOutput = true;
    //    HttpContext.Current.Response.Charset = "ISO-8859-9";
    //    HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
    //    //HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
    //    HttpContext.Current.Response.ContentType = "application/pdf";
    //    dbAutoTrack.PDFWriter.Document doc = new dbAutoTrack.PDFWriter.Document();




    //    HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("ISO-8859-9");
    //    HttpContext.Current.Response.Charset = "ISO-8859-9";
    //    HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + fileName + ".pdf");

    //    System.IO.StringWriter stringWrite = new StringWriter(System.Globalization.CultureInfo.CreateSpecificCulture("tr-TR"));
    //    System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(stringWrite);
    //    ctrlGrid.RenderControl(htmlWriter);

    //    // Output table as HTML
    //    string a1 = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<title>Datos</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1254\" />\n<style>\n</style>\n</head>\n<body>\n";
    //    string a3 = "<h3 align='center'>" + HttpContext.Current.Server.HtmlDecode(Baslik) + "</h3>";
    //    string a2 = "\n</body>\n</html>";
    //    HttpContext.Current.Response.Write(a1 + a3 + stringWrite.ToString() + a2);
    //    doc.Generate(HttpContext.Current.Response, fileName + ".pdf");
    //    doc.
    //    HttpContext.Current.Response.Flush();
    //    HttpContext.Current.Response.End();
    //    //HttpContext.Current.Response.End();

    //}

    /// <summary>
    /// Gönderilen kontrolün word çıktısını verir.
    /// </summary>
    /// <param name="ctrl">Çıktısını istediğiniz kontrol. eg.Gridview,Page vs... Eğer kontrol olarak Page Gönderiliyorsa EnableEventValidation=falase yapılması lazım</param>
    public static void Ctrl2Word(Control ctrl)
    {
        HttpResponse cResponse = HttpContext.Current.Response;
        cResponse.Clear();
        cResponse.BufferOutput = true;
        cResponse.AddHeader("content-disposition", "attachment;filename=Rapor.doc");
        cResponse.ContentEncoding = System.Text.Encoding.UTF7;
        cResponse.Charset = "ISO-8859-9";
        cResponse.Cache.SetCacheability(HttpCacheability.NoCache);
        cResponse.ContentType = "application/vnd.doc";
        System.IO.StringWriter stringWrite = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
        HtmlForm frm = new HtmlForm();
        ctrl.Parent.Controls.Add(frm);
        frm.Controls.Add(ctrl);
        frm.RenderControl(htmlWrite);
        cResponse.Write(stringWrite.ToString());
        cResponse.End();
    }
    #endregion





    public static string AyiTurkceyeCevir(DateTime dtTarih)
    {
        int nAy = dtTarih.Month;
        string sSonuc = string.Empty;
        switch (nAy)
        {
            case 1:
                sSonuc = "Ocak";
                break;
            case 2:
                sSonuc = "Şubat";
                break;
            case 3:
                sSonuc = "Mart";
                break;
            case 4:
                sSonuc = "Nisan";
                break;
            case 5:
                sSonuc = "Mayıs";
                break;
            case 6:
                sSonuc = "Haziran";
                break;
            case 7:
                sSonuc = "Temmuz";
                break;
            case 8:
                sSonuc = "Ağustos";
                break;
            case 9:
                sSonuc = "Eylül";
                break;
            case 10:
                sSonuc = "Ekim";
                break;
            case 11:
                sSonuc = "Kasım";
                break;
            case 12:
                sSonuc = "Aralık";
                break;
            default:
                break;
        }
        return sSonuc;
    }

    //public static string OgrenimStrGetir(Tipler.DataSetler.OGRENIMDataSet dsOgrenim)
    //{
    //    if (dsOgrenim.OGRENIM.Rows.Count )
    //        return string.Empty;

    //    string strOgrenim;
    //    Tipler.DataSetler.OGRENIMDataSet.OGRENIMRow drOgrenim = (Tipler.DataSetler.OGRENIMDataSet.OGRENIMRow)dsOgrenim.OGRENIM.Select("1=1","OGRENIMDURUMID")[0];

    //    if (drOgrenim.OGRENIMDURUMID == Tipler.Enumlar.EnumOgrenimDurum.Alti_Yıllık_Yüksek_Okul.GetHashCode() ||
    //        drOgrenim.OGRENIMDURUMID == Tipler.Enumlar.EnumOgrenimDurum.Bes_Yıllık_Yüksek_Okul.GetHashCode() ||
    //        drOgrenim.OGRENIMDURUMID == Tipler.Enumlar.EnumOgrenimDurum.Doktora.GetHashCode() ||
    //        drOgrenim.OGRENIMDURUMID == Tipler.Enumlar.EnumOgrenimDurum.Dort_Yıllık_Yüksek_Okul.GetHashCode() ||
    //        drOgrenim.OGRENIMDURUMID == Tipler.Enumlar.EnumOgrenimDurum.Iki_Yıllık_Yüksek_Okul.GetHashCode() ||
    //        drOgrenim.OGRENIMDURUMID == Tipler.Enumlar.EnumOgrenimDurum.Lisansüstü.GetHashCode() ||
    //        drOgrenim.OGRENIMDURUMID == Tipler.Enumlar.EnumOgrenimDurum.Uc_Yıllık_Yüksek_Okul.GetHashCode())
    //    {
    //        strOgrenim = drOgrenim.IsOKULIDNull() ? "" : CachePage.OkulPrmRowGetir(drOgrenim.OKULID).ADI + " ";
    //        strOgrenim += drOgrenim.IsFAKULTEIDNull() ? "" : CachePage.FakultePrmRowGetir(drOgrenim.FAKULTEID).ADI + " ";
    //        strOgrenim += drOgrenim.IsBOLUMIDNull() ? "" : CachePage.BolumPrmRowGetir(drOgrenim.BOLUMID).ADI;

    //        foreach (Tipler.DataSetler.OGRENIMDataSet.OGRENIMRow drLisansUstu in dsOgrenim.OGRENIM.Select("OGRENIMDURUMID=" + Tipler.Enumlar.EnumOgrenimDurum.Lisansüstü.GetHashCode() + " OR OGRENIMDURUMID=" + Tipler.Enumlar.EnumOgrenimDurum.Doktora.GetHashCode()))
    //        {
    //            strOgrenim += "\n" + (drLisansUstu.IsOKULIDNull() ? "" : CachePage.OkulPrmRowGetir(drLisansUstu.OKULID).ADI + " ");
    //            strOgrenim += drLisansUstu.IsFAKULTEIDNull() ? "" : CachePage.FakultePrmRowGetir(drLisansUstu.FAKULTEID).ADI + " ";
    //            strOgrenim += drLisansUstu.IsBOLUMIDNull() ? "" : CachePage.BolumPrmRowGetir(drLisansUstu.BOLUMID).ADI;
    //        }
    //    }
    //    else
    //        strOgrenim = CachePage.OgrenimDurumPrmRowGetir(drOgrenim.OGRENIMDURUMID).OGRENIMDURUMADI;

    //    return strOgrenim;
    //}

    /// <summary>   
    /// Returns the Column Index of a GridView Column based on the Header Text of the Column   
    /// If the Function fails to find the Column based on the header text, it will return zero   
    /// </summary>   
    /// <param name="ColumnName">Sütun Adı</param>   
    /// <param name="gv">GridView </param>   
    public static int SutunSirasiGetir(GridView grd, string SutunAdi)
    {
        int columnID = -1;
        // Loop all the columns   
        var DataControlFieldsList = grd.Columns.OfType<DataControlField>().ToList().
                                    Where(t => t.HeaderText.ToUpper().Trim() == SutunAdi.ToUpper().Trim() ||
                                    t.AccessibleHeaderText.ToUpper().Trim() == SutunAdi.ToUpper().Trim()).ToList();
        if (DataControlFieldsList != null)
        {
            if (DataControlFieldsList.Count > 0)
            {
                columnID = grd.Columns.IndexOf(DataControlFieldsList.First());
            }
        }
        return columnID;
    }
    
    public static string ListControlValueToStr(ListControl lbx)
    {
        string str = "";
        foreach (ListItem item in lbx.Items)
        {
            if (item.Selected && item.Value != "-1")
                str += item.Value + ",";
        }

        if (str != "")
        {
            str = str.Remove(str.Length - 1);
            str = str.Insert(0, "(");
            str = str.Insert(str.Length, ")");
        }

        return str;
    }

    public static string DSValueToStr(DataSet ds)
    {
        string str = "";
        foreach (DataRow dr in ds.Tables[0].Rows)
        {
            if (dr[0].ToString() != "-1")
                str += dr[0].ToString() + ",";
        }
        if (str != "")
        {
            str = str.Remove(str.Length - 1);
            str = str.Insert(0, "(");
            str = str.Insert(str.Length, ")");
        }

        return str;
    }

    public static string DSValueToStr(DataSet ds, string KolonAdi)
    {
        string str = "";
        foreach (DataRow dr in ds.Tables[0].Rows)
        {
            if (dr[KolonAdi].ToString() != "-1")
                str += dr[KolonAdi].ToString() + ",";
        }
        if (str != "")
        {
            str = str.Remove(str.Length - 1);
            str = str.Insert(0, "(");
            str = str.Insert(str.Length, ")");
        }

        return str;
    }

    public static DateTime EmeklilikTerfiTarihiGetir(DateTime terfiTarihi)
    {
        int gun = terfiTarihi.Day;
        int ay = terfiTarihi.Month;
        if (gun < 15)
            ay--;
        gun = 15;
        return new DateTime(terfiTarihi.Year, ay, gun);

    }

    public static void ExcelTempDosyalariniSil(string sDirectory)
    {
        TimeSpan ts = new TimeSpan(0, 0, 10, 0);
        DateTime controlTime = DateTime.Now.Subtract(ts);
        foreach (string sFileName in System.IO.Directory.GetFiles(sDirectory))
        {
            if (sFileName.Substring(sFileName.IndexOf(".", 0) + 1) == "xls" && controlTime.CompareTo(File.GetCreationTime(sFileName)) > 0)
            {
                File.Delete(sFileName);
            }
        }
    }

    public static byte[] MD5Sifreleme(string sText)
    {
        return Tipler.Siniflar.Sifreleme.MD5Sifreleme(sText);
    }

    public static string Md5SifrelemeString(string sText)
    {
        byte[] md5Sifre = Tipler.Siniflar.Sifreleme.MD5Sifreleme(sText);
        string md5String = "";
        foreach (byte b in md5Sifre)
        {
            md5String += b.ToString();
        }
        return md5String;
    }

    public static void TabDegis(Page oPage, int nTab)
    {
        HiddenField hdn = (HiddenField)oPage.Master.FindControl("tabDegisHV");
        hdn.Value = nTab.ToString();

        //Label tabDegis = new Label();
        //tabDegis.Attributes.Add("id", "tabDegis");
        //tabDegis.Attributes.Add("style", "display:none");
        //tabDegis.Text = nTab.ToString();
        ////oPage.Master.FindControl("divTabdegisContainer").Controls.Clear();
    }

    //public static CustomHyperLink getHyperLinkImageCellType(string sJSParameter, string sImageUrl)
    //{
    //    CustomHyperLink fpcell = new CustomHyperLink("");
    //    fpcell.JSParameterString = sJSParameter;
    //    fpcell.ImageUrl = sImageUrl;
    //    return fpcell;
    //}
    //public static CustomHyperLink getModalHyperLinkImageCellType(string NavigateUrl, string sImageUrl)
    //{
    //    CustomHyperLink fpcell = new CustomHyperLink("", "modalize");
    //    fpcell.NavigateUrl = NavigateUrl;
    //    fpcell.ImageUrl = sImageUrl;
    //    return fpcell;
    //}
    //public static FarPoint.Web.Spread.DateTimeCellType getDateTimeCellType(string sErrorMessage)
    //{
    //    FarPoint.Web.Spread.DateTimeCellType fpCell = new FarPoint.Web.Spread.DateTimeCellType();
    //    DateTimeFormatInfo d = new DateTimeFormatInfo();
    //    d.ShortDatePattern = "dd/MM/yyyy";
    //    fpCell.ErrorMessage = sErrorMessage;
    //    fpCell.DateTimeFormat = d;
    //    return fpCell;
    //}
    //public static FarPoint.Web.Spread.IntegerCellType getIntegerCellType(string sErrorMessage)
    //{
    //    FarPoint.Web.Spread.IntegerCellType fpCell = new FarPoint.Web.Spread.IntegerCellType();
    //    fpCell.ErrorMessage = sErrorMessage;
    //    return fpCell;
    //}
    //public static FarPoint.Web.Spread.DoubleCellType getFormattedDoubeCellType(string sErrorMessage)
    //{
    //    FarPoint.Web.Spread.DoubleCellType fpcell = new FarPoint.Web.Spread.DoubleCellType();
    //    fpcell.NumberFormat = getTRCultureInfo().NumberFormat;
    //    //fpcell1.FormatString = "N";
    //    fpcell.FixedPoint = true;
    //    fpcell.ErrorMessage = sErrorMessage;
    //    return fpcell;
    //}
    //public static FarPoint.Web.Spread.DoubleCellType getFormattedFiyatCellType(string sErrorMessage)
    //{
    //    FarPoint.Web.Spread.DoubleCellType fpcell = new FarPoint.Web.Spread.DoubleCellType();
    //    fpcell.NumberFormat = getTRCultureInfoFiyat().NumberFormat;
    //    //fpcell1.FormatString = "N";
    //    //fpcell.FixedPoint = true;        
    //    fpcell.ErrorMessage = sErrorMessage;
    //    return fpcell;
    //}
    //public static FarPoint.Web.Spread.TextCellType getHiddenCellType()
    //{
    //    FarPoint.Web.Spread.TextCellType fpcell = new FarPoint.Web.Spread.TextCellType();
    //    fpcell.CssClass = "hidden";
    //    return fpcell;
    //}


    public static CultureInfo getTRCultureInfoFiyat()
    {
        CultureInfo c = new CultureInfo("tr-TR");
        c.NumberFormat.NumberDecimalDigits = 6;
        c.NumberFormat.NumberDecimalSeparator = ",";
        c.NumberFormat.NumberGroupSeparator = ".";
        return c;
    }
    public static CultureInfo getTRCultureInfo()
    {
        CultureInfo c = new CultureInfo("tr-TR");
        c.NumberFormat.NumberDecimalDigits = 2;
        c.NumberFormat.NumberDecimalSeparator = ",";
        c.NumberFormat.NumberGroupSeparator = ".";
        return c;
    }

    public static void WordTempDosyalariniSil(string sDirectory)
    {
        TimeSpan ts = new TimeSpan(0, 0, 10, 0);
        DateTime controlTime = DateTime.Now.Subtract(ts);
        foreach (string sFileName in System.IO.Directory.GetFiles(sDirectory))
        {
            if (sFileName.Substring(sFileName.IndexOf(".", 0) + 1) == "doc" && controlTime.CompareTo(File.GetCreationTime(sFileName)) > 0)
            {
                File.Delete(sFileName);
            }
        }
    }

    private static bool AradaNoktaVarmi(string sText)
    {
        if (sText.IndexOf(".") > 0)
            return true;
        else
            return false;
    }

    public static void EventLogYaz(string HataMesaji, EventLogEntryType erType = EventLogEntryType.Error)
    {
        LogAraci.EventLogYaz(HataMesaji, erType);
    }

    public void TarihFarkiHesapla30Gun(DateTime t1, DateTime t2, out int yil, out int ay, out int gun)//Ayları 30 gün kabul ediyoruz.
    {
        gun = Convert.ToInt32(t1.Day.ToString().Replace("31", "30")) - Convert.ToInt32(t2.Day.ToString().Replace("31", "30"));
        ay = t1.Month - t2.Month;
        yil = t1.Year - t2.Year;

        if (gun < 0)
        {
            gun += 30;
            ay--;
        }
        if (ay < 0)
        {
            ay += 12;
            yil--;
        }
    }

    public static void Temizle(Control ctrl)
    {
        if (ctrl.Controls.Count > 0)
        {
            foreach (Control ctrTemizlik in ctrl.Controls)
            {
                Temizle(ctrTemizlik);
            }
        }
        if (ctrl is TextBox)
            ((TextBox)ctrl).Text = "";
        if (ctrl is CheckBox)
            ((CheckBox)ctrl).Checked = false;

        if (ctrl is DropDownList)
        {
            ((DropDownList)ctrl).SelectedIndex = -1;
            ((DropDownList)ctrl).ClearSelection();
        }
        if (ctrl is Literal)
            ((Literal)ctrl).Text = "";

        if (ctrl is CheckBoxList)
        {
            for (int i = 0; i < ((CheckBoxList)ctrl).Items.Count; i++)
            {
                ((CheckBoxList)ctrl).Items[i].Selected = false;
            }
        }
        if (ctrl is ListBox)
        {
            ((ListBox)ctrl).Items.Clear();
        }
    }
}

